/*
 * $Id: modaldialog.js 50 2012-02-22 13:29:34Z rook.alex@gmail.com $
 * @description base js for modal dialogs
 */

$.fn.extend({
    findBlocker:function(){
        var blocker_id="#"+$(this).attr("id")+"-blocker"
        return $(blocker_id);
    },
    setZIndex:function(index){
        return $(this).css("z-index", index);
    },
    bindCloseBtn:function(){
        var dlg=$(this);
        $(".close-btn",this).click(function($e){
            $e.preventDefault();
            $(dlg).findBlocker().hide();
            dlg.hide().trigger("Hide.Dialog");
        });
        return dlg;
    },
    bindShowBtn:function(runlink){
        var dlg=$(this);
        $(runlink).click(
            function($e) {
                $e.preventDefault();
                dlg.showDialog();
            }
            ); 
        return dlg;
    },
    showDialog:function(){
        $(this).findBlocker().show();
        return $(this).show().trigger("Show.Dialog");
    },
    createBlocker:function(priority){
        var dlg=$(this);
        var zinx=parseInt($().constants.zIndexBlockerBase)+parseInt(priority);
        var id=dlg.attr("id")+"-blocker";
        if ($("#"+id).size()==0) {
            $("<div/>").addClass("blocker").appendTo("body").setZIndex(zinx).attr("id", id);  //див на весь экран поверх основного слоя страницы
        }
        return dlg;
    },
    ModalDialog:function(runlink,priority) {
        var zinx=parseInt($().constants.zIndexBlockerBase)+parseInt(priority)+1; //диалог выше
        $(this).createBlocker(priority).    //создать слой блокировки
        setZIndex(zinx). //расположить выше блокера
        bindShowBtn(runlink).       //привязать запуск диалога к переданному елемент/ам/у
        bindCloseBtn();             //настроить кнопки закрытия
        //вернуть по цепочке
        return $(this);          
    }
    
});

